package com.wfm.mianshi;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import sun.util.resources.LocaleData;

public class Demo {
    public static boolean isSpecialDate(String dateStr){
        // 对称
        if(!dateStr.equals(new StringBuilder(dateStr).reverse().toString())){
            return false;
        }

        String noZero = dateStr.replaceAll("0","");
//        if(noZero.length()!=1){
//            return false;
//        }
        HashSet<Character> set = new HashSet<>();
        set.add(noZero.charAt(0));
        for (int i = 1; i < noZero.length(); i++) {
            char c = noZero.charAt(i);
            if(!set.contains(c)){
                return false;
            }
        }

        return true;
    }

    public static boolean checkDate(String date){
        return isSpecialDate(date);
    }

//    public static boolean isOneNoZoro(String s){
//        HashMap<Character,Integer> map  = new HashMap<>();
//        for (int i = 0; i < s.length(); i++) {
//            char c = s.charAt(i);
//            Integer integer = map.putIfAbsent(c,1);
//            if(integer)
//        }
//    }

    public static List<String> findSpecialDates(){
        LocalDate start = LocalDate.of(1970, 1, 1);
        LocalDate end = LocalDate.now();
        List<String> specialDates = new ArrayList<>();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        while (!start.isAfter(end)){
            String dateStr = start.format(formatter);
            if(isSpecialDate(dateStr)){
                specialDates.add(dateStr);
            }
            start = start.plusDays(1);
        }
        return specialDates;

    }

    public static void main(String[] args) {
//        System.out.println(checkDate("20200202"));
        System.out.println(findSpecialDates());
    }
}
